import numpy as np
from shapely.geometry import LineString, Point, Polygon, LinearRing

def translate_line(A, B, a, L):
    """
    将线段AB所在的直线沿向量a方向平移距离L

    参数:
        A, B: 线段端点坐标，格式 (x, y)
        a: 平移方向向量，格式 (dx, dy)
        L: 平移距离

    返回:
        新直线上的两点坐标 (A_new, B_new)
    """
    # 将输入转换为NumPy数组（如果不是）
    A = np.array(A)
    B = np.array(B)
    a = np.array(a)

    # 计算单位方向向量
    norm = np.linalg.norm(a)
    if norm < 1e-10:  # 处理零向量
        return A, B  # 方向向量为零，不移动

    u = a / norm

    # 计算平移向量
    v = u * L

    # 平移点A和B
    A_new = A + v
    B_new = B + v

    dx = B[0] - A[0]
    dy = B[1] - A[1]
    extended_A = (A_new[0] - 100000 * dx, A_new[1] - 100000 * dy)
    extended_B = (B_new[0] + 100000 * dx, B_new[1] + 100000 * dy)

    moved_AB_line = LineString([extended_A, extended_B])

    return moved_AB_line